[レポート] Fivetran Technical Workshop #Fivetran
大阪オフィス所属だけど今は奈良県でリモートワーク中の玉井です。
Fivetran社のウェビナーを受講したのでレポートします。
概要
スピーカー
内容
- Fivetranの概要を簡単に説明します。
- 新機能について説明します。
- データウェアハウスにデータをロードするシナリオをデモします。
- Fivetranのプロダクトロードマップを紹介します。
- 質疑応答
レポート
※レポートの文章は、登壇者視点で記述しています。
Overview
Fivetranの主な特徴の一つは、「いかに自動化されているか」ということです。他ツールは、カスタマイズやスキーマ周りの設定を多く行わなくてはいけませんが、Fivetranは、データをデータウェアハウスにロードする前に、既にデータをどのように構造化するかが決まっている…というのがの大きなポイントです。ER図も整備されており、すべてのアプリケーションベースのコネクタに対して、データがどのようにデータウェアハウスに格納されるか、重複の問題なく複製されるか、というのを、Fivetranの公式ドキュメントで確認することができます。(データ元の)APIの変更やスキーマの変更、パイプラインを継続的に監視しなければならないことについて、頭を悩ませる必要はありません。
これはFivetranがお客様のために行うことなのですが、昨今のクラウドネイティブなサービスについては、当社のエンジニアが常にエンドポイントを監視しています。多くのサービスでは、APIが一晩で変更されたり、変更ログが更新されずに壊れたりすることがあると思います。私たちのチームは、基本的にはエンドポイントに発生した変更を常に監視しています。コネクタがダウンして同期が一時停止した場合は、可能な限り迅速に修正し、コネクタを復旧させてからは、ダウンタイムの間に不足していたデータのみを同期させます。私たちは、お客様のデータの品質が常に完全であることを確認します。
これは私たちが最近追加した新しいスライドで、Fivetranが連携できるものを鳥瞰図にしています。私たちは、マーケティングに焦点を当てていることを時々そこにツールについて話します。左側には、多くの異なるデータソースがありますが、私たちは現在、ほぼ毎週新しいコネクタを追加しています。Google AdsやFacebook Adsのようなマーケティングベースのツールに接続したり、Stripeのような課金システムに直接接続したり、Google Sheetsに直接接続したり、顧客のVPNの後ろで稼働しているトランザクションDBだったり。MySQLやOracleなどに接続することができます。Data Sources | Connector Directory | Fivetran data pipelinesにアクセスすると、全てのコネクタを見ることができます。
元々、FivetranはBIのためにデータを構造化するという目的のために登場しました。しかし、従来はデータを直接データウェアハウスにロードするだけでしたが、データのユースケースは継続的に進化しています。データレイクは非常に興味深い機能です(新機能のいくつかを説明する際に詳しく説明します)。AIや機械学習もあります。私たちが作っているのはピカピカのダッシュボードだけではありません。データはあらゆる方面で全面的に使用されているのです。
New Features
新機能の中で最もエキサイティングなものの一つはdbtとの連携です。
Fivetranは実際にELTの非常に軽量な部分を担当する機能を持っていて、データウェアハウス上でプッシュダウン型のSQLクエリを実行することができました。これまでのようにデータウェアハウス上でクエリを実行して、データが到着したらデータを変換できるようにしていました。しかし今、私たちが行っているのは、そのデータにdbt packageを統合するという取り組みです。もう少し説明すると、Fivetranはデータ処理のE(抽出)とL(ロード)のプロセスにおいて、80%のデータはソースから取得しますが、残りの20%は「データ」から取得します。私たちは、ユーザーが格納したデータに対して(再び)変換を実行しなければならないことを理解しています。しかし、dbt packageは、実際にデータを変換してレポートを作成できるようにするための素晴らしいヘッドスタートを提供します。
2つ目は、DestinationにDatabricksが追加されたことです。
Databricksは、実際にはApache Sparkを実行する能力に特化しています。AIや機械学習のユースケースに特化しています。従来のデータウェアハウスのようなものではなく、DatabricksをDestinationに設定することで、機械学習や人工知能のユースケースを実行することができます。
また、Fivetranの最大の利点は、新しいコネクタを追加されることです。覚えておいていただきたいのは、Fivetranについて私が製品チームに来て学んだことの1つは、新しいコネクタを手に入れるだけだということです。まず、私たちは、それらがユーザーを助けることになる堅牢なコネクタであることを確信します。それは、ランダムなAPIを打つだけのバニラコネクタではありません。実際にデータを取得し、いくつかの文書化されたER図を生成しています。
Fivetranは、あなたがソースから取得したデータを理解するために、ソースからデータを取得し、それを翻訳して、あなたのデータウェアハウスに届けて、それからBIツール等でレポートすることができるようなモデルセットに変換します。今までのデータエンジニアはソースデータについて多くのことを学ばなければなりませんでした。これらのソースにSalesforce、NetSuite、HubSpotのようなサービスをいくつも掛け合わせると、データエンジニアが理解しなければならない情報は膨大です。つまり、あなたのレポートは、データエンジニアがソースをどのように理解しているかに依存していたのです。そしてそれは、あなたの標準レポートに多くのバリエーションを導入してしまっていることを意味していました。Fivetranは個々のソースの専門家を社内に抱えており、それをユーザーに提供しています。そして、ユーザーのためにデータをデータウェアハウスに保管し、そのデータからレポートを作成できるようにしています。私たちは、これらのソースだけでなく、過去のデータを横断的に持ち込むことにも精通しています。私たちは実際にデータの増分を持ってきているので、1日目でソースとターゲットの調整を行うことができます。2日目には、ソースからデータを更新して、レポートを最新の状態にします。このような複雑なデータの取り扱いを「ファイル転送」という処理としてカプセル化しています。これは、接続や更新が非常に簡単なことと、スキーマの変更を自動的に処理することで、データ統合が途切れることがないようにするためのものです。ソースが変更されても、影響はありません。ターゲットのスキーマ変更は、データを移動させて、レポートフォームにデータが常に存在するようにします。これがFivetranの重要な差別化要因の1つです。
Technical Deep Dive
SalesforceのデータをSnowflakeにロードするデモ
※このデモの内容はほとんど下記の弊社ウェビナーでやったことと同じなので、詳細は割愛します。
dbt packageとの連携
データウェアハウスにSalesforceのデータを入れた後、そのデータをどうするか?という話に入ります。
FivetranからSQLを実行して直接変換を実行することができますが、ここではdbt packageを導入します。Fivetranのブログに直接アクセスすると、これらのDBTパッケージについての詳細な情報を見ることができます(上記参照)。
dbtのサイトに行けば、これらのdbt packageの詳細情報を見ることができます。
これらのdbt packageを直接ダウンロードして、あなたのdbtインスタンス上で変換を行うことができます。ここでは、その作業の様子を少し広げてみましょう。
これはPostgresのデータウェアハウスです。これは私の開発者インスタンスです。これは完全なデータなので、ソースから連携されたすべてのSalesforceオブジェクトです。これで何が起こるかというと、Fivetranを使用して、このSalesforceデータをDBに着陸させることができます。その後、我々が提供するこれらのdbt packageを実行することができます。このdbt packageは派生ビューとテーブルを作成します。あなたからのレポートは、私がこれらのビューを作成したことを確認することができます。これらのSalesforceビューは、Fivetranで連携したSalesforceデータから自動的に生成されます。これで、レポート開発者を次の段階に進めることができます。dbtは、ユーザーが実際にレポートを作成するためのデータを手に入れることができるように、ユーザーをデータ変換の旅に連れて行きます。これについてはもう少し詳しく説明しますが、多くのコネクタ用のdbt packageをリリースしており、週に2、3のdbt packageをリリースしています。
Product Roadmap
製品ロードマップについてお話しますが、dbtとの連携は、製品ロードマップの大きな部分を占めています。これにより、ユーザーはデータ変換の旅の最後の20%を完了することができます。
もう一つは、クラスター型データベースのサポートです。これは伝統的に、これまでは簡単にできていたことですが、今ではデータベースが存在しています。Fivetranが提供するものについて、あなたが持っていた質問です。それは、ソースから変更を取ることを容易にしようとします。今、あなたが1つのデータベースから変更することについて考えてみましょう。そのデータベースから大きい変更を行うのは簡単です。しかし、データベースがクラスタを持っている場合、特にそれらのデータベース間のレプリケーション要素を考慮すると、データの変更をキャッチするのは非常に困難です。複数のデータベースから複数の変更を取り込んでいる場合は、基本的にハンドル項目の有効性を隠してしまうことになります。MongoDBでは、シャードクラスタからデータを取得することができます。Oracle RACのサポートも間もなく提供できる予定です。
Fivetranには、Snowflake、BigQuery、Redshift、DatabricksなどのDestinationがあります。しかし、次のステップとしては、データレイクをDestinationにします。製品ロードマップでも、これについては現在取り組んでいるところであり、近日中にユーザーにお届けする予定です。
Q&A
Fivetranはデータソースからの変更履歴を保持しているのですか?それとも常に最新の状態をターゲット(Destination)に書き込むのですか?
ライブモードとヒストリーモードのどちらかを選択できるようになっています。ライブモードでは、ソースとターゲットの間で完全なレプリケーションを行います。ヒストリーモードでは、基本的にSlowly Changing Dimensionsの変更履歴の流れを保持することができます。どのディメンションを対象とするか選択することができます。追跡したい特定のディメンションのヒストリカルモードを保持することができます。
dbtとの統合とはどういうことでしょうか?テンプレートみたいたものを実行するということでしょうか?
その通りです。例えば、6時間ごとにデータソースからターゲットDBへデータをロードするとします。データが特定のテーブルに到着したら、自動的にdbtモデルを実行することができます。データがスキーマに到着したときに、フローをオーケストレーションすることができます。モデルを実行し、データを更新し、ビューを作成し、デバイス、テーブルを更新し、既にレポートが流れる準備ができている…というようにできます。Fivetranが現在行っていること、特にデータ連携後のSQLで行っていることですが、dbtモデルでもオーケストレーションを行うことができるようになるでしょう。
Fivetranが提供するものだけではなく、独自のdbt変換を開発することはできますか?
いいえ。Fivetranが提供するdbtモデルは、データトランスフォーメーションの観点でいう、あなたのためのオーバーヘッドスタートに過ぎません。(モデルは)私たちが制作します。あなたはそれを編集したり、自分のものを追加したりすることができますが、ユーザーはそれらのモデルに縛られているわけではありません。これは、あなたのスキーマに蓄積されたデータをレポートするのを支援するために、あなたを導くものです。
おわりに
思ってたよりdbtとの連携を推している印象を受けました。この「先にロードして後から変換をかける」という「ELT」の考え方は、US等の海外のデータ分析基盤ではデファクトスタンダードになりつつあります。
あと、驚いたのが「DWHにデータをロードするのは従来のデータ活用」「これからはデータレイクとか機械学習と連携していく」というメッセージ。日本ではまだDWHを導入すること自体が新しいのに、海外では「DWHはかなり前から普通に使っているテクノロジー」という認識なんですね。これは結構カルチャーショックでした。